<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script>
  function fn() {
    try {
      const str = 123
      console.log(str.concat('e'))
    } catch (error) {
      console.log(error)
      // TypeError: str.concat is not a function
      // at fn (test.html?_ijt=gat522eprvgdc9c9nm76jcgvpe&_ij_reload=RELOAD_ON_SAVE:12:23)
      // at test.html?_ijt=gat522eprvgdc9c9nm76jcgvpe&_ij_reload=RELOAD_ON_SAVE:28:3

      /**
       * 怎样把 error 转换成字符串形式？
       * */

      // 方法1：字符串模版
      console.log(`${error}`) // TypeError: str.concat is not a function

      // 方法2：toString() 或 String()
      console.log(error.toString()) // TypeError: str.concat is not a function
      console.log(String(error)) // TypeError: str.concat is not a function

      // 方法3：message 属性
      console.log(error.message) // str.concat is not a function

      // 方法4：获取更多信息，包括堆栈信息
      const errorString = `
      Error: ${error.name}
      Message: ${error.message}
      Stack: ${error.stack}
      `;
      console.log(errorString);

      // 注意：catch 参数不一定是 error 对象，所以要先判断
      if (error instanceof Error) {
        // 以上逻辑
      } else {
        // 不是error对象
        console.log(JSON.stringify(error))
      }


      // console.log(JSON.stringify(e))
    }
  }

  fn()
</script>
</body>
</html>